package cn.wolfcode.crm.service;

import cn.wolfcode.crm.domain.Client;
import cn.wolfcode.crm.domain.ClientTransferRecord;
import cn.wolfcode.crm.domain.DevelopFailedRecord;
import cn.wolfcode.crm.domain.LostClientRecord;
import cn.wolfcode.crm.query.QueryObject;
import cn.wolfcode.crm.util.PageResult;

import java.util.List;

public interface IClientService {
    void saveOrUpdate(Client entity);

    void delete(Long id);

    Client get(Long id);

    List<Client> listAll();

    PageResult query(QueryObject qo);

    /**
     * 移入客户资源池，即更改客户状态为2
     * @param id
     */
    void moveToPool(Long id);


    /**
     * 尝试开发，即添加负责人
     * @param id
     */
    void exploit(Long id);

    /**
     * 移交客户
     * @param record 需要保存到移交客户记录的对象
     */
    void exchange(ClientTransferRecord record);

    /**
     * 标记开发失败用户
     *
     * @param record 开发失败的用户的信息
     */
    void developFailed(DevelopFailedRecord record);

    /**
     * 标记流失客户
     *
     * @param record 流失用户的信息
     */
    void lost(LostClientRecord record);

    /**
     * 吸纳客户
     *
     * @param id
     */
    void absorb(Long id);

    Long selectIdByName(String name);

    /**
     * 校验身份证号是否已存在
     *
     * @param identitynum
     * @param id
     * @return
     */
    boolean validateIdNumber(String identitynum, Long id);

    Client selectByPrimaryKey(Long id);


}
